package org.dromara.easyes.test.entity;

import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;

import java.math.BigDecimal;
import java.util.Date;

/**
 * Description:
 *
 * @Author: 86631561@163.com
 * Date: 2023/9/26 10:59
 * UpdateUser: 86631561@163.com
 * UpdateDate: 2023/9/26 10:59
 * UpdateRemark: The modified content
 * Version: 1.0.0
 * <p>
 * Copyright © 2023 86631561@163.com Technologies Inc. All Rights Reserved
 **/
public class BusOrderPay {
    /**
     * $column.columnComment
     */
    @IndexId(type = IdType.CUSTOMIZE)
    private Long orderPayId;
    /**
     * $column.columnComment
     */
    private Long orderId;
    /**
     * 子记录
     */
    private Long subOrderId;
    /**
     * 企业主键
     */
    private Long companyId;
    /**
     * 商户主键
     */
    private Long merchantId;
    /**
     * 客户ID
     */
    private Long customerId;
    /**
     * 客户ID
     */
    private Long customerUserId;
    /**
     * 关联支付ID
     */
    private Long payInfoId;
    /**
     * 支付分类 1-购物授权创建 2-商户调整创建 3-用户主动发起
     */
    private Integer createType;
    /**
     * 支付分类 1-支付 2-退款 3-合并支付
     */
    private Integer orderPayType;
    /**
     * 支付分类 1-支付宝 2-微信 3-云闪付
     */
    private Integer ifType;
    /**
     * 支付模式 1-微信确认支付分 2-微信免确认支付分 3-通用代扣 4-单次代扣 5-WX_JSAPI 6-ALI_JSAPI 9-退款
     */
    private Integer ifMode;
    /**
     * 关联原支付ID
     */
    private Long originalOrderPayId;
    /**
     * 拆分主订单ID
     */
    private Long splitOrderPayId;
    /**
     * 拆分主订单ID
     */
    private Long overLimitOrderPayId;
    /**
     * 签约信息,json字符串
     */
    private String payParams;
    /**
     * 签约号
     */
    private String agreementNo;
    /**
     * 第三方签约号
     */
    private String thirdAgreementNo;
    /**
     * 第三方支付订单号 支付宝完成支付时回写 微信支付分创建时生成
     */
    private String thirdPayOrderId;
    /**
     * 1-创建 2-签约中 3-签约成功 4-支付中 5-支付成功 7-退款中 8-退款成功 9-取消退款 100-交易关闭 102-签约超时 103-签约失败 104-支付失败 105-部分支付 106-退款失败
     */
    private Integer status;
    /**
     * 批价标志 0-无 1-待处理 2-处理失败 9-处理完成 19-处理失败
     */
    private Integer rateStatus;
    /**
     * 错误码
     */
    private String errorCode;
    /**
     * 错误信息
     */
    private String errorMsg;
    /**
     * 总额
     */
    @IndexField(fieldType = FieldType.SCALED_FLOAT)
    private BigDecimal totalAmount;
    /**
     * 总优惠
     */
    @IndexField(fieldType = FieldType.SCALED_FLOAT)
    private BigDecimal discountAmount;
    /**
     * 总优惠说明
     */
    private String discountRemark;
    /**
     * 退款
     */
    @IndexField(fieldType = FieldType.SCALED_FLOAT)
    private BigDecimal refundAmount;
    /**
     * 退款说明
     */
    private String refundRemark;
    /**
     * 补扣
     */
    @IndexField(fieldType = FieldType.SCALED_FLOAT)
    private BigDecimal additionalAmount;
    /**
     * 补扣说明
     */
    private String additionalRemark;
    /**
     * 总计
     */
    @IndexField(fieldType = FieldType.SCALED_FLOAT)
    private BigDecimal amount;
    /**
     * 已退款
     */
    @IndexField(fieldType = FieldType.SCALED_FLOAT)
    private BigDecimal refundedAmount;
    /**
     * 备注说明
     */
    private String remark;
    /**
     * 签约时间
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
    private Date agreementTime;
    /**
     * 支付时间
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
    private Date payTime;
    /**
     * 账务时间
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
    private Date rateTime;

    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
    private Date createTime;

    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
    private Date updateTime;

    /** 创建者 */
    private String createBy;

    /** 更新者 */
    private String updateBy;
}
